// 数据导出工具函数

/**
 * 导出JSON格式数据
 * @param {Object} data - 要导出的数据
 * @param {String} filename - 文件名
 */
export function exportJSON(data, filename = 'health-data.json') {
  const jsonStr = JSON.stringify(data, null, 2)
  const blob = new Blob([jsonStr], { type: 'application/json' })
  downloadFile(blob, filename)
}

/**
 * 导出CSV格式数据
 * @param {Array} data - 要导出的数据数组
 * @param {Array} headers - CSV头部
 * @param {String} filename - 文件名
 */
export function exportCSV(data, headers, filename = 'health-data.csv') {
  const csvContent = convertToCSV(data, headers)
  const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' })
  downloadFile(blob, filename)
}

/**
 * 导出PDF格式数据（简化版）
 * @param {Object} data - 要导出的数据
 * @param {String} filename - 文件名
 */
export function exportPDF(data, filename = 'health-report.pdf') {
  // 这里可以集成PDF生成库，如jsPDF
  // 暂时提供JSON下载作为替代
  console.log('PDF导出功能需要集成PDF库')
  exportJSON(data, filename.replace('.pdf', '.json'))
}

/**
 * 将数据转换为CSV格式
 * @param {Array} data - 数据数组
 * @param {Array} headers - 头部信息
 * @returns {String} CSV字符串
 */
function convertToCSV(data, headers) {
  const headerRow = headers.map(h => h.label).join(',')
  const csvRows = [headerRow]
  
  data.forEach(row => {
    const values = headers.map(header => {
      const value = row[header.key] || ''
      // 如果值包含逗号或换行符，需要用引号包裹
      return typeof value === 'string' && (value.includes(',') || value.includes('\n')) 
        ? `"${value}"` 
        : value
    })
    csvRows.push(values.join(','))
  })
  
  return csvRows.join('\n')
}

/**
 * 下载文件
 * @param {Blob} blob - 文件Blob对象
 * @param {String} filename - 文件名
 */
function downloadFile(blob, filename) {
  const url = window.URL.createObjectURL(blob)
  const link = document.createElement('a')
  link.href = url
  link.download = filename
  document.body.appendChild(link)
  link.click()
  document.body.removeChild(link)
  window.URL.revokeObjectURL(url)
}

/**
 * 导出健康数据
 * @param {String} type - 导出类型: json, csv, pdf
 * @param {Array} healthData - 健康数据
 */
export function exportHealthData(type, healthData) {
  const timestamp = new Date().toISOString().split('T')[0]
  const filename = `health-data-${timestamp}.${type}`
  
  switch (type) {
    case 'json':
      exportJSON(healthData, filename)
      break
    case 'csv':
      const headers = [
        { key: 'date', label: '日期' },
        { key: 'systolic', label: '收缩压' },
        { key: 'diastolic', label: '舒张压' },
        { key: 'heartRate', label: '心率' },
        { key: 'weight', label: '体重' },
        { key: 'oxygen', label: '血氧' },
        { key: 'steps', label: '步数' }
      ]
      exportCSV(healthData, headers, filename)
      break
    case 'pdf':
      exportPDF(healthData, filename)
      break
    default:
      console.error('不支持的导出类型')
  }
}